/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mrp.web;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlInputHidden;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.model.SelectItem;
import javax.faces.model.SelectItemGroup;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.menuitem.MenuItem;
import org.primefaces.event.CloseEvent;
import org.primefaces.component.calendar.Calendar;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.confirmdialog.ConfirmDialog;
import org.primefaces.component.dialog.Dialog;
import org.primefaces.event.TabChangeEvent;

import mrp.beans.ClienteBean;
import mrp.beans.UsuarioBean;
import mrp.beans.util.JsfUtil;
import mrp.login.Login;
import mrp.persistencia.entity.Cliente;
import mrp.persistencia.entity.Empresa;
import mrp.persistencia.entity.Persona;

/**
 *
 * @author root
 */
@ManagedBean(name="clienteWeb")
@SessionScoped

public class ClienteWeb implements Serializable{
    
    @ManagedProperty("#{usuarioBean}")
    private UsuarioBean usuarioBean;
    @ManagedProperty("#{login}")
    private Login login;
//    @ManagedProperty("#{cliente}")
    private ClienteBean clienteBean;
    
    
    private String paginaCargar="";
    
    //Componentes ingresoClientesPersona.xhtml e ingresoClientesEmpresa
        private InputText textNumeroCliente;
        private InputText textDireccionCliente;
        private Calendar calFechaIngresoCliente;
        private InputText textTelefonoCliente;
        private InputText textCelularCliente;
        private HtmlSelectOneMenu comboPrioridadClientePersona;
        private HtmlSelectOneMenu comboPrioridadClienteEmpresa;
        private InputText textCedulaCliente;
        private InputText textNombreCliente;
        private InputText textRUCCliente;
        private InputText textNombreEmpresa;
        private InputText textRepresentante;
        private HtmlInputHidden hiddenPersonaEmpresa;//en el form se setea el valor si es P=persona E=empresa
        private ConfirmDialog confirmDialogoClientePersona;
                
    //Componentes y elementos consultarClientes.xhtml
        private org.primefaces.component.menuitem.MenuItem menuItemNuevoClientePersona;
        private org.primefaces.component.menuitem.MenuItem menuItemNuevoClienteEmpresa;
        private org.primefaces.component.commandbutton.CommandButton botonConsultarCliente;
        private org.primefaces.component.inputtext.InputText textBuscarCliente;
        private javax.faces.component.html.HtmlSelectOneMenu comboBuscarCliente;
        private javax.faces.component.html.HtmlSelectOneMenu comboCoincidenciaBusquedaCliente;
        private Dialog dialogoConsultarCliente;

        //Atributos para cargar la tabla
        private List <Persona> tablaDatosPersona;
        private List <Empresa> tablaDatosEmpresa;
        //fin Atributos para cargar la tabla
        private Persona clientePersonaSeleccionado;
        private Empresa clienteEmpresaSeleccionado;
                
        private List <String> datosSeleccionado,nombreDatoSeleccionado;
        private String nombreDialogo="";
        private String tabSeleccionadoPersonaOEmpresa="Persona";//se carga al momento de seleccionarseuno de los datos de la tabla en el getter 
    //fin componentes y elementos consultarClientes.xhtml
    
    //componentes y elementos de modificarDatosClientePersona.xhtml
        private Persona clienteActualizarDatosPersona;
        private Empresa clienteActualizarDatosEmpresa;
        private InputText textFechaIngresoCliente;
    //fin componentes y elementos de modificarDatosClientePersona.xhtml
       
    //componentes y elementos de eliminarCliente.xhtml        
        private HtmlOutputText outTextClienteEliminar;
    //fin componentes y elementos de eliminarCliente.xhtml        
    

    public ClienteWeb() {
        this.clienteBean=new ClienteBean();
    }
        
   
    //////////////////Metodos getters and setters
        
    public ClienteBean getClienteBean() {
        return clienteBean;       
    }

    public void setClienteBean(ClienteBean clienteBean) {
        this.clienteBean = clienteBean;
    }

    public Login getLogin() {
        return login;
    }

    public void setLogin(Login login) {
        this.login = login;
    }

    public UsuarioBean getUsuarioBean() {
        return usuarioBean;
    }

    public void setUsuarioBean(UsuarioBean usuarioBean) {
        this.usuarioBean = usuarioBean;
    }

    public String getPaginaCargar() {
        return paginaCargar;
    }

    public void setPaginaCargar(String paginaCargar) {
        this.paginaCargar = paginaCargar;
    }  
    
    
    //// getters and setters Componentes ingresoClientesPersona.xhtml e ingresoClientesEmpresa
    public Calendar getCalFechaIngresoCliente() {
        return calFechaIngresoCliente;
    }
    public void setCalFechaIngresoCliente(Calendar calFechaIngresoCliente) {
        this.calFechaIngresoCliente = calFechaIngresoCliente;
    }

    public HtmlSelectOneMenu getComboPrioridadClienteEmpresa() {
        return comboPrioridadClienteEmpresa;
    }

    public void setComboPrioridadClienteEmpresa(HtmlSelectOneMenu comboPrioridadClienteEmpresa) {
        this.comboPrioridadClienteEmpresa = comboPrioridadClienteEmpresa;
    }

    public HtmlSelectOneMenu getComboPrioridadClientePersona() {
        return comboPrioridadClientePersona;
    }

    public void setComboPrioridadClientePersona(HtmlSelectOneMenu comboPrioridadClientePersona) {
        this.comboPrioridadClientePersona = comboPrioridadClientePersona;
    }          
    public InputText getTextCedulaCliente() {
        return textCedulaCliente;
    }
    public void setTextCedulaCliente(InputText textCedulaCliente) {
        this.textCedulaCliente = textCedulaCliente;
    }
    public InputText getTextCelularCliente() {
        return textCelularCliente;
    }
    public void setTextCelularCliente(InputText textCelularCliente) {
        this.textCelularCliente = textCelularCliente;
    }
    public InputText getTextDireccionCliente() {
        return textDireccionCliente;
    }
    public void setTextDireccionCliente(InputText textDireccionCliente) {
        this.textDireccionCliente = textDireccionCliente;
    }
    public InputText getTextNombreCliente() {
        return textNombreCliente;
    }
    public void setTextNombreCliente(InputText textNombreCliente) {
        this.textNombreCliente = textNombreCliente;
    }
    public InputText getTextNombreEmpresa() {
        return textNombreEmpresa;
    }
    public void setTextNombreEmpresa(InputText textNombreEmpresa) {
        this.textNombreEmpresa = textNombreEmpresa;
    }
    public InputText getTextNumeroCliente() {
        return textNumeroCliente;
    }
    public void setTextNumeroCliente(InputText textNumeroCliente) {
        this.textNumeroCliente = textNumeroCliente;
    }
    public InputText getTextRUCCliente() {
        return textRUCCliente;
    }
    public void setTextRUCCliente(InputText textRUCCliente) {
        this.textRUCCliente = textRUCCliente;
    }
    public InputText getTextRepresentante() {
        return textRepresentante;
    }
    public void setTextRepresentante(InputText textRepresentante) {
        this.textRepresentante = textRepresentante;
    }
    public InputText getTextTelefonoCliente() {
        return textTelefonoCliente;
    }
    public void setTextTelefonoCliente(InputText textTelefonoCliente) {
        this.textTelefonoCliente = textTelefonoCliente;
    }
     public HtmlInputHidden getHiddenPersonaEmpresa() {
        return hiddenPersonaEmpresa;
    }
    public void setHiddenPersonaEmpresa(HtmlInputHidden hiddenPersonaEmpresa) {
        this.hiddenPersonaEmpresa = hiddenPersonaEmpresa;
    }
    public ConfirmDialog getConfirmDialogoClientePersona() {
        return confirmDialogoClientePersona;
    }

    public void setConfirmDialogoClientePersona(ConfirmDialog confirmDialogoClientePersona) {
        this.confirmDialogoClientePersona = confirmDialogoClientePersona;
    }
    
    //// getters and setters Componentes ingresoClientesPersona.xhtml e ingresoClientesEmpresa

    
    
    
    //// getters and setters Componentes consultarClientes.xhtml
    public MenuItem getMenuItemNuevoClienteEmpresa() {
        return menuItemNuevoClienteEmpresa;
    }
    public void setMenuItemNuevoClienteEmpresa(MenuItem menuItemNuevoClienteEmpresa) {
        this.menuItemNuevoClienteEmpresa = menuItemNuevoClienteEmpresa;
    }
    public MenuItem getMenuItemNuevoClientePersona() {
        return menuItemNuevoClientePersona;
    }
    public void setMenuItemNuevoClientePersona(MenuItem menuItemNuevoClientePersona) {
        this.menuItemNuevoClientePersona = menuItemNuevoClientePersona;
    }
    public CommandButton getBotonConsultarCliente() {
        return botonConsultarCliente;
    }
    public void setBotonConsultarCliente(CommandButton botonConsultarCliente) {
        this.botonConsultarCliente = botonConsultarCliente;
    }
    public InputText getTextBuscarCliente() {
        return textBuscarCliente;
    }
    public void setTextBuscarCliente(InputText textBuscarCliente) {
        this.textBuscarCliente = textBuscarCliente;
    }
    public HtmlSelectOneMenu getComboBuscarCliente() {
        return comboBuscarCliente;
    }
    public void setComboBuscarCliente(HtmlSelectOneMenu comboBuscarCliente) {
        this.comboBuscarCliente = comboBuscarCliente;
    }
    public HtmlSelectOneMenu getComboCoincidenciaBusquedaCliente() {
        return comboCoincidenciaBusquedaCliente;
    }
    public void setComboCoincidenciaBusquedaCliente(HtmlSelectOneMenu comboCoincidenciaBusquedaCliente) {
        this.comboCoincidenciaBusquedaCliente = comboCoincidenciaBusquedaCliente;
    }

   public List<Empresa> getTablaDatosEmpresa() {
        return tablaDatosEmpresa;
    }

    public void setTablaDatosEmpresa(List<Empresa> tablaDatosEmpresa) {
        this.tablaDatosEmpresa = tablaDatosEmpresa;
    }

    public List<Persona> getTablaDatosPersona() {        
        return tablaDatosPersona;        
    }

    public void setTablaDatosPersona(List<Persona> tablaDatosPersona) {
        this.tablaDatosPersona = tablaDatosPersona;
    }

    public Empresa getClienteEmpresaSeleccionado() {
        return clienteEmpresaSeleccionado;
    }

    public void setClienteEmpresaSeleccionado(Empresa clienteEmpresaSeleccionado) {
        this.clienteEmpresaSeleccionado = clienteEmpresaSeleccionado;
    }

    public Persona getClientePersonaSeleccionado() {
        return clientePersonaSeleccionado;
    }

    public void setClientePersonaSeleccionado(Persona clientePersonaSeleccionado) {
        this.clientePersonaSeleccionado = clientePersonaSeleccionado;
    }

    public Dialog getDialogoConsultarCliente() {
        return dialogoConsultarCliente;
    }

    public void setDialogoConsultarCliente(Dialog dialogoConsultarCliente) {
        this.dialogoConsultarCliente = dialogoConsultarCliente;
    }    
    public List<String> getDatosSeleccionado() {
        return datosSeleccionado;
    }

    public void setDatosSeleccionado(List<String> datosSeleccionado) {
        this.datosSeleccionado = datosSeleccionado;
    }
    public List<String> getNombreDatoSeleccionado() {
        return nombreDatoSeleccionado;
    }
    public void setNombreDatoSeleccionado(List<String> nombreDatoSeleccionado) {
        this.nombreDatoSeleccionado = nombreDatoSeleccionado;
    }
    public String getNombreDialogo() {
        return nombreDialogo;
    }
    public void setNombreDialogo(String nombreDialogo) {
        this.nombreDialogo = nombreDialogo;
    }

     //// fin getters and setters Componentes consultarClientes.xhtml

   //// getters and setters Componentes modificarDatosClientePersona y Empresa.xhtml
    public Empresa getClienteActualizarDatosEmpresa() {
        return clienteActualizarDatosEmpresa;
    }

    public void setClienteActualizarDatosEmpresa(Empresa clienteActualizarDatosEmpresa) {
        this.clienteActualizarDatosEmpresa = clienteActualizarDatosEmpresa;
    }

    public Persona getClienteActualizarDatosPersona() {
        return clienteActualizarDatosPersona;
    }

    public void setClienteActualizarDatosPersona(Persona clienteActualizarDatosPersona) {
        this.clienteActualizarDatosPersona = clienteActualizarDatosPersona;
    }

   
    public InputText getTextFechaIngresoCliente() {
        return textFechaIngresoCliente;
    }
    public void setTextFechaIngresoCliente(InputText textFechaIngresoCliente) {
        this.textFechaIngresoCliente = textFechaIngresoCliente;
    }    
        
    ////fin getters and setters Componentes modificarDatosClientePersona y Empresa.xhtml
    
    ////getters and setters Componentes eliminarCliente.xhtml
    public HtmlOutputText getOutTextClienteEliminar() {
        return outTextClienteEliminar;
    }
    public void setOutTextClienteEliminar(HtmlOutputText outTextClienteEliminar) {
        this.outTextClienteEliminar = outTextClienteEliminar;
    }
    ////fin getters and setters Componentes eliminarCliente.xhtml
    
    
//////////////////Fin metodos getters and setters

    
////////////////  Seccion Eventos del toolbar 
   public void eventoCerrar(CloseEvent event) {
//       FacesMessage mensaje = new FacesMessage(FacesMessage.SEVERITY_INFO, "Panel Closed", "Closed panel id:'" + event.getComponent().getId() + "'");
//       mostrarMensaje(mensaje); message="Seguro que desea cerrar?"
//		     header="Gestión Clientes" 
       System.out.println("Evento cerrar**********");
   }   
   public void eventomenuItemNuevoClienteEmpresa()
   {
       System.out.println("Evento boton click en ********** "+menuItemNuevoClienteEmpresa.getValue());
       this.setPaginaCargar("./ingresoClientesEmpresa.xhtml");
   }
   public void eventomenuItemNuevoClientePersona()
   {
       System.out.println("Evento boton click en **********" +menuItemNuevoClientePersona.getValue());
       this.setPaginaCargar("./ingresoClientesPersona.xhtml");
   }
   public void eventobotonConsultarCliente()
   {
       System.out.println("Evento boton click en **********" +botonConsultarCliente.getValue()+" login.verificarSesionUsuario().equals(usuarioBean.getIdSesion() "+login.verificarSesionUsuario()+" "+usuarioBean.getUsuario().getIdSesion());
       this.setPaginaCargar("./consultarClientes.xhtml");
   }
   
////////////////// Fin seccion eventos del toolbar
   
   /////metodos de ingresoClientesPersona.xhtml e ingresoClientesEmpresa
   public void mostrarConfirmDialogo(String operacionEncabezado,String mensaje)
   {
        this.getConfirmDialogoClientePersona().setHeader(operacionEncabezado);
        this.getConfirmDialogoClientePersona().setMessage(mensaje);
        this.getConfirmDialogoClientePersona().setVisible(true);
       
   }
   public void borrarDatos()
   {
//       try{                  
//            this.textNumeroCliente=new InputText();
//            this.textDireccionCliente=new InputText();
//            this.calFechaIngresoCliente=new Calendar();
//            this.textTelefonoCliente=new InputText();      
//            this.textCelularCliente=new InputText();       
//            if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
//            {
//                    this.comboPrioridadClientePersona.resetValue();
//                    this.comboPrioridadClientePersona.setValue("0");
//                    this.textCedulaCliente=new InputText();
//                    this.textNombreCliente=new InputText();          
//            }
//            else{
//                    this.comboPrioridadClienteEmpresa.resetValue();
//                    this.comboPrioridadClienteEmpresa.setValue("0");
//                    this.textRUCCliente=new InputText();
//                    this.textNombreEmpresa=new InputText();
//                    this.textRepresentante=new InputText();
//            }
//        }catch(java.lang.NullPointerException npe)
//        {
//            System.out.println("-------------Excepcion en borrarDatos() "+npe);
//        }
//       System.out.println("-------------borrar datos");
       try{                  
            this.getTextNumeroCliente().setValue("");
            this.getTextDireccionCliente().setValue("");
            this.getCalFechaIngresoCliente().resetValue();
            this.getTextTelefonoCliente().setValue("");      
            this.getTextCelularCliente().setValue("");       
            if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
            {
                    this.getComboPrioridadClientePersona().setValue("0");
                    this.getTextCedulaCliente().setValue("");
                    this.getTextNombreCliente().setValue("");          
            }
            else{
                    this.getComboPrioridadClienteEmpresa().setValue("0");
                    this.getTextRUCCliente().setValue("");
                    this.getTextNombreEmpresa().setValue("");
                    this.getTextRepresentante().setValue("");
            }
        }catch(java.lang.NullPointerException npe)
        {
            npe.printStackTrace();
            System.out.println("-------------Excepcion en borrarDatos() "+npe);
        }
       System.out.println("-------------borrar datos");
   }
  public List<SelectItem>  cargaCombo()
  {      
      List<SelectItem> selectOneMenuListUnidadMedida = new ArrayList<SelectItem>();      
        selectOneMenuListUnidadMedida.add(new SelectItem("nulo","Seleccione..."));
        selectOneMenuListUnidadMedida.add(new SelectItem("1","Prioridad 1/10"));
        selectOneMenuListUnidadMedida.add(new SelectItem("2","Prioridad 2/10"));
        selectOneMenuListUnidadMedida.add(new SelectItem("3","Prioridad 3/10"));
        selectOneMenuListUnidadMedida.add(new SelectItem("4","Prioridad 4/10"));
        selectOneMenuListUnidadMedida.add(new SelectItem("5","Prioridad 5/10"));
        selectOneMenuListUnidadMedida.add(new SelectItem("6","Prioridad 6/10"));
        selectOneMenuListUnidadMedida.add(new SelectItem("7","Prioridad 7/10"));
        selectOneMenuListUnidadMedida.add(new SelectItem("8","Prioridad 8/10"));
        selectOneMenuListUnidadMedida.add(new SelectItem("9","Prioridad 9/10"));
        selectOneMenuListUnidadMedida.add(new SelectItem("10","Prioridad 10/10"));
        return selectOneMenuListUnidadMedida;                            
  }
   public List<String> getEstilosTodosComponentes()
   {
       List<String>listaComponentesEstilos=new ArrayList<String>();
       
       if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
       {
            listaComponentesEstilos.add("width: 150px;left: 160px; top: 54px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("width: 400px;left: 160px; top: 144px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("left: 165px; top: 264px; position: absolute; font-size: 9pt");
            listaComponentesEstilos.add("width: 150px;left: 160px; top: 174px; position: absolute; font-size: 12px ");       
            listaComponentesEstilos.add("width: 150px;left: 160px; top: 204px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("width: 130px;left: 160px; top: 236px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("width: 150px;left: 160px; top: 84px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("width: 400px;left: 160px; top: 114px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("");
            listaComponentesEstilos.add("");
            listaComponentesEstilos.add("");
       }
       else{
            listaComponentesEstilos.add("width: 150px;left: 160px; top: 52px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("width: 400px;left: 160px; top: 172px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("left: 160px; top: 294px; position: absolute; font-size: 9pt");
            listaComponentesEstilos.add("width: 150px;left: 160px; top: 202px; position: absolute; font-size: 12px ");       
            listaComponentesEstilos.add("width: 150px;left: 160px; top: 232px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("width: 130px;left: 160px; top: 264px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("");
            listaComponentesEstilos.add("");
            listaComponentesEstilos.add("width: 150px;left: 160px; top: 82px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("width: 400px;left: 160px; top: 112px; position: absolute; font-size: 12px ");
            listaComponentesEstilos.add("width: 400px;left: 160px; top: 142px; position: absolute; font-size: 12px ");
       }
       return listaComponentesEstilos;
   }
   public void setEstilosTodosComponentes(List<String>listaComponentesEstilos)
   {
       this.getTextDireccionCliente().setStyle(listaComponentesEstilos.get(1).toString());
       this.getCalFechaIngresoCliente().setStyle(listaComponentesEstilos.get(2).toString());
       this.getTextTelefonoCliente().setStyle(listaComponentesEstilos.get(3).toString());      
       this.getTextCelularCliente().setStyle(listaComponentesEstilos.get(4).toString());       
       if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
       {
            this.getComboPrioridadClientePersona().setStyle(listaComponentesEstilos.get(5).toString());
            this.getTextCedulaCliente().setStyle(listaComponentesEstilos.get(6).toString());
            this.getTextNombreCliente().setStyle(listaComponentesEstilos.get(7).toString());          
       }
       else{
            this.getComboPrioridadClienteEmpresa().setStyle(listaComponentesEstilos.get(5).toString());
            this.getTextRUCCliente().setStyle(listaComponentesEstilos.get(8).toString());
            this.getTextNombreEmpresa().setStyle(listaComponentesEstilos.get(9).toString());
            this.getTextRepresentante().setStyle(listaComponentesEstilos.get(10).toString());
       }
   }
   public boolean esCamposVacios(List<Object>listaComponentes)
   {
       boolean noVacio=true;
       List<String>listaComponentesEstilos=this.getEstilosTodosComponentes();
       for(int i=0;i<listaComponentes.size();i++)
       {
           if(i==1)
           {
                try{                     
                    noVacio=false;                    
                    String fecha=JsfUtil.convertirFecha((Date)((Calendar)listaComponentes.get(i)).getValue());
                    noVacio=JsfUtil.verficaFechaMenorFechaActual(fecha);
//                    noVacio=true;
                    System.out.println("-------------llego fecha vacia");
                }catch(java.lang.NullPointerException npe)
                {                    
                    ((Calendar)listaComponentes.get(i)).setStyle(listaComponentesEstilos.get(i+1)+";background-color: crimson");
                    System.out.println("-------------fecha vacia");
                }  
           }
           else
           {
                if(i==4)
                {
                    if(((HtmlSelectOneMenu)listaComponentes.get(i)).getValue().toString().equals("nulo"))
                    {                        
                        noVacio=false;
                        ((HtmlSelectOneMenu)listaComponentes.get(i)).setStyle(listaComponentesEstilos.get(i+1)+";background-color: crimson");    
                    }
                }
                else
                {
                    boolean isEmpty=true;
                    try{
                        isEmpty=((InputText)listaComponentes.get(i)).getValue().toString().isEmpty();
                    }
                    catch(java.lang.NullPointerException npe)
                    {
                        isEmpty=true;
                    }
                    if(isEmpty&&(i<=4))
                    {
                        noVacio=false;                       
                        ((InputText)listaComponentes.get(i)).setStyle(listaComponentesEstilos.get(i+1)+";border-color: crimson");
                    }
                    else
                    {
                        if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
                        {
                            if((i<=6)&&isEmpty)
                            {
                                 noVacio=false;
                                ((InputText)listaComponentes.get(i)).setStyle(listaComponentesEstilos.get(i+1)+";border-color: crimson");   
                            }
                        }
                        else
                        {
                            if(this.getHiddenPersonaEmpresa().getValue().toString().equals("E"))
                            {
                                if((i>6)&&isEmpty)
                                {
                                    noVacio=false;
                                    ((InputText)listaComponentes.get(i)).setStyle(listaComponentesEstilos.get(i+1)+";border-color: crimson");   
                                }
                                
                            }
                        }
                        
                    }
                }
           }
       }
       return noVacio;
   }
   public void clicBotonIngresarCliente() ///boton guardarCliente persona y empresa
   {  
       if(this.getLogin().verificarLogin())
       {
       
            List<Object>listaComponentes=new ArrayList<Object>();

            listaComponentes.add(this.getTextDireccionCliente());
            listaComponentes.add(this.getCalFechaIngresoCliente());
            listaComponentes.add(this.getTextTelefonoCliente());       
            listaComponentes.add(this.getTextCelularCliente());
            if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
            {
                    listaComponentes.add(this.getComboPrioridadClientePersona());
            }else{
                listaComponentes.add(this.getComboPrioridadClienteEmpresa());
            }
            listaComponentes.add(this.getTextCedulaCliente());
            listaComponentes.add(this.getTextNombreCliente());
            listaComponentes.add(this.getTextRUCCliente());
            listaComponentes.add(this.getTextNombreEmpresa());
            listaComponentes.add(this.getTextRepresentante());

            List<String>listaComponentesEstilos=this.getEstilosTodosComponentes();
            this.setEstilosTodosComponentes(listaComponentesEstilos);
        //       System.out.println("List<String>listaComponentesEstilos----- "+listaComponentesEstilos.get(0));
            if(this.esCamposVacios(listaComponentes))
            {           
                    if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
                    {
                        Persona p=new Persona();
                        //p.setNumerocliente();
                        p.setDireccion(this.getTextDireccionCliente().getValue().toString().trim().toUpperCase());
                        p.setFechaingreso((Date)this.getCalFechaIngresoCliente().getValue());
                        p.setTelefono(this.getTextTelefonoCliente().getValue().toString().trim());
                        p.setTelefonocelular(this.getTextCelularCliente().getValue().toString().trim());
                        p.setPrioridadcliente(Integer.parseInt(this.getComboPrioridadClientePersona().getValue().toString().trim()));
                        p.setDigitador(Integer.parseInt(this.getUsuarioBean().getUsuario().getCodUsuario()));
                        p.setFechadigitador(new Date());
                        p.setNombrecliente(this.getTextNombreCliente().getValue().toString().trim().toUpperCase());
                        p.setNumerocedula(this.getTextCedulaCliente().getValue().toString().trim().toUpperCase());
                        
                        this.getClienteBean().setPersona(p);
                    }
                    else
                    {
                        Empresa e=new Empresa();
                        //p.setNumerocliente();
                        e.setDireccion(this.getTextDireccionCliente().getValue().toString().trim().toUpperCase());
                        e.setFechaingreso((Date)this.getCalFechaIngresoCliente().getValue());
                        e.setTelefono(this.getTextTelefonoCliente().getValue().toString().trim());
                        e.setTelefonocelular(this.getTextCelularCliente().getValue().toString().trim());
                        e.setPrioridadcliente(Integer.parseInt(this.getComboPrioridadClienteEmpresa().getValue().toString().trim()));
                        e.setDigitador(Integer.parseInt(this.getUsuarioBean().getUsuario().getCodUsuario()));
                        e.setFechadigitador(new Date());
                        e.setNombreempresa(this.getTextNombreEmpresa().getValue().toString().trim().toUpperCase());
                        e.setRuc(this.getTextRUCCliente().getValue().toString().trim().toUpperCase());
                        e.setRepresentante(this.getTextRepresentante().getValue().toString().trim().toUpperCase());
                        
                        this.getClienteBean().setEmpresa(e);
                    }
                    this.getClienteBean().setPersonaEmpresa(this.getHiddenPersonaEmpresa().getValue().toString());
                    List listaRespuestaIngreso=this.getClienteBean().ingresarCliente();
                    if((Boolean)listaRespuestaIngreso.get(0))
                    {
                        JsfUtil.mostrarMensaje("info",listaRespuestaIngreso.get(1).toString(),"");
                        this.borrarDatos();
                        System.out.println(" cliente creado");
                    }     
                    else
                    {
                        JsfUtil.mostrarMensaje("error",listaRespuestaIngreso.get(1).toString(),"");
                    }
            }
            else
            {
                JsfUtil.mostrarMensaje("error", "Error: Datos requeridos deben ser llenados", "");
                //this.mostrarConfirmDialogo("Ingresar Cliente", "Error: Datos requeridos deben ser llenados");
            }
        }
        else
        {
            JsfUtil.mostrarMensaje("error","No está ingresado al sistema","");            
//            this.borrarDatos();
        }
   }
   /////fin de metodos de ingresoClientesPersona.xhtml e ingresoClientesEmpresa  
   
   /////metodos de consultarClientes.xhtml
 
    public String getTabSeleccionadoPersonaOEmpresa() {//se carga al momento de seleccionarseuno de los datos de la tabla en el getter 
            return tabSeleccionadoPersonaOEmpresa;
    }
    public void setTabSeleccionadoPersonaOEmpresa(String tabSeleccionadoPersonaOEmpresa) {
        this.tabSeleccionadoPersonaOEmpresa = tabSeleccionadoPersonaOEmpresa;
    }   
   public void eventoTabSeleccionadoPersonaEmpresa(TabChangeEvent event)
   {
       if(event.getTab().getId().equals("tabPersona"))
       {
          this.setTabSeleccionadoPersonaOEmpresa("Persona");
       }
       else{
           this.setTabSeleccionadoPersonaOEmpresa("Empresa");
       }
       System.out.println("Tab seleccionado----------------= " +this.getTabSeleccionadoPersonaOEmpresa());
   }
   public void eventoFilaSeleccionadaTablaPersonaEmpresa(String esPersonaEmpresa) 
   {//metodo carga los datos del ultimo cliente seleccionado en el caso que se deseen actualizar
//       Cliente cli;
       if(esPersonaEmpresa.equals("Persona"))
       {           
           Persona cli=(Persona)this.getClientePersonaSeleccionado();
            this.setClienteActualizarDatosPersona(cli);
       }
       else
       {
           Empresa cli=(Empresa)this.getClienteEmpresaSeleccionado();
           this.setClienteActualizarDatosEmpresa(cli);
       }
       System.out.println("eventoFilaSeleccionadaTablaPersonaEmpresa "+esPersonaEmpresa+" dato ");
   }
   public void clicBotonConsultarCliente()//boton dentro del template toolbarCliente.xhtml
   {
       try{
            if((!this.getTablaDatosEmpresa().isEmpty())||(!this.getTablaDatosPersona().isEmpty()))
            {
                this.clicBotonBuscarCliente();
            }
       }
       catch(Exception e){
            System.out.println("Exception en metodo clicBotonConsultarCliente() "+e);
       }
   }
   public void clicBotonBuscarCliente()//boton dentro de consultarClientes.xhtml
   {
       this.borrarDatosDialogoConsultarCliente();
       if(this.getLogin().verificarLogin())
       {
            if(!this.getComboBuscarCliente().getValue().equals("Todo"))
            {
                boolean ingreso=false;
                if(this.getComboBuscarCliente().getValue().equals("PrioridadCliente"))
                {
                     try
                     {
                         Integer.parseInt(this.getTextBuscarCliente().getValue().toString());
                         ingreso=true;
                     }
                     catch(NumberFormatException nfe)
                     {
                        this.getTextBuscarCliente().setStyle("border-color: crimson");
                        JsfUtil.mostrarMensaje("error", "Ingrese un número", "");                        
                     }
                }
                else
                {
                    ingreso=true;
                }
               if(ingreso)
               { 
                    this.getComboBuscarCliente().setStyle("");
                    this.getTextBuscarCliente().setStyle("");
                    String buscarCliente1[]={this.getTextBuscarCliente().getValue().toString(),this.getComboBuscarCliente().getValue().toString(),this.getComboCoincidenciaBusquedaCliente().getValue().toString()};
                    this.buscarCliente=buscarCliente1;
                    List <List> datos=this.getClienteBean().consultarCliente(this.getTextBuscarCliente().getValue().toString(),this.getComboBuscarCliente().getValue().toString(),this.getComboCoincidenciaBusquedaCliente().getValue().toString(),-1,-1,true);
                    this.setTablaDatosPersona(datos.get(0));
                    this.setTablaDatosEmpresa(datos.get(1));
               }              
            }
            else
            {
                this.getComboBuscarCliente().setStyle("");
                this.getTextBuscarCliente().setStyle("");
                String buscarCliente1[]={"","Todo",""};
                this.buscarCliente=buscarCliente1;
                List <List> datos=this.getClienteBean().consultarCliente("","Todo","",-1,-1,true);
                this.setTablaDatosPersona(datos.get(0));
                this.setTablaDatosEmpresa(datos.get(1));
//                    System.out.println("Es null el combobox------------------");
//                    this.getComboBuscarCliente().setStyle("border-color: crimson;background-color: crimson");
//                    JsfUtil.mostrarMensaje("error", "Seleccione un criterio para la búsqueda", "");                                       
            }
       }
    }
   private String[] buscarCliente;//despues de actualizar o eliminar datos para refrescar la tabla
   public void reconsultarCliente()
   {
        List <List> datos=this.getClienteBean().consultarCliente(this.buscarCliente[0],this.buscarCliente[1],this.buscarCliente[2],-1,-1,true);
        this.setTablaDatosPersona(datos.get(0));
        this.setTablaDatosEmpresa(datos.get(1));
   }
    public void borrarDatosDialogoConsultarCliente()
    {
        try{
            this.getDialogoConsultarCliente().getChildren().clear();    
            this.getDialogoConsultarCliente().clearInitialState();
        }
        catch(Exception e)
        {
            System.out.println("Excepcion en metodo mostrarDialogoDatosConsultaCliente " +e);
        }
    }  
        
    public void mostrarDatosTablaDialogo(String esPersonaEmpresa)
    {        
        this.nombreDialogo="";
        try{
            this.getDatosSeleccionado().clear();
        }        
        catch(Exception e){
            System.out.println("error en metodo mostrarDatosTablaDialogo "+e );
        }
        try{
            this.getNombreDatoSeleccionado().clear();
        }        
        catch(Exception e){
            System.out.println("error en metodo mostrarDatosTablaDialogo "+e );
        }        
        if(esPersonaEmpresa.equals("Persona"))
        {
            Persona cli=this.getClientePersonaSeleccionado();
            List<String> datos0=new ArrayList<String>();
            datos0.add("Numero Cliente:");
            datos0.add("Cedula:");
            datos0.add("Nombre:");
            datos0.add("Dirección:");
            datos0.add("Teléfono Fijo:");
            datos0.add("Teléfono Celular:");
            datos0.add("Prioridad Cliente:");
            datos0.add("Fecha Ingreso:");
            List<String> datos1=new ArrayList<String>();
            datos1.add("      Numero Cliente:"+cli.getNumerocliente());
            datos1.add("              Cedula:"+cli.getNumerocedula());
            datos1.add("              Nombre:"+cli.getNombrecliente());
            datos1.add("           Dirección:"+cli.getDireccion());
            datos1.add("       Teléfono Fijo:"+cli.getTelefono());
            datos1.add("    Teléfono Celular:"+cli.getTelefonocelular());
            datos1.add("   Prioridad Cliente:"+""+cli.getPrioridadcliente()+"/10");
            datos1.add("       Fecha Ingreso:"+cli.getFechaingreso());
            this.setNombreDialogo("Datos del Cliente:");
            this.setNombreDatoSeleccionado(datos0);
            this.setDatosSeleccionado(datos1);                        
        }
        else
        {
            Empresa cli=this.getClienteEmpresaSeleccionado();
            List<String> datos0=new ArrayList<String>();
            datos0.add("Cliente Numero:");
            datos0.add("RUC:");
            datos0.add("Razón Social:");
            datos0.add("Nombre Representante:");
            datos0.add("Dirección:");
            datos0.add("Teléfono Fijo:");
            datos0.add("Teléfono Celular:");
            datos0.add("Prioridad Cliente:");
            datos0.add("Fecha Ingreso:");
            List<String> datos1=new ArrayList<String>();
            datos1.add("      Cliente Numero:"+cli.getNumerocliente());
            datos1.add("                 RUC:"+cli.getRuc());
            datos1.add("        Razón Social:"+cli.getNombreempresa());
            datos1.add("Nombre Representante:"+cli.getRepresentante());
            datos1.add("           Dirección:"+cli.getDireccion());
            datos1.add("       Teléfono Fijo:"+cli.getTelefono());
            datos1.add("    Teléfono Celular:"+cli.getTelefonocelular());
            datos1.add("   Prioridad Cliente:"+""+cli.getPrioridadcliente()+"/10");
            datos1.add("       Fecha Ingreso:"+cli.getFechaingreso());
            this.setNombreDialogo("Datos de la Empresa:");
            this.setNombreDatoSeleccionado(datos0);
            this.setDatosSeleccionado(datos1);
        }        
    }    
    /////fin de metodos de consultarClientes.xhtml

    /////metodos de modificarDatosClientePersona.xhtml   
    public String pathModificarDatosCliente() //Setea el path de modificar cliente si es persona o empresa
    {
        return "/formularios/gestionClientes/modificarDatosCliente"+this.getTabSeleccionadoPersonaOEmpresa();         
    }       
    public void clicBotonActualizarCliente() ///boton actualizarCliente persona y empresa
   {
        if(this.getLogin().verificarLogin())
       {
            List<Object>listaComponentes=new ArrayList<Object>();

            listaComponentes.add(this.getTextDireccionCliente());
            listaComponentes.add(this.getTextFechaIngresoCliente());
            listaComponentes.add(this.getTextTelefonoCliente());       
            listaComponentes.add(this.getTextCelularCliente());
            if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
            {
                        listaComponentes.add(this.getComboPrioridadClientePersona());
            }else{
                    listaComponentes.add(this.getComboPrioridadClienteEmpresa());
            }
            listaComponentes.add(this.getTextCedulaCliente());
            listaComponentes.add(this.getTextNombreCliente());
            listaComponentes.add(this.getTextRUCCliente());
            listaComponentes.add(this.getTextNombreEmpresa());
            listaComponentes.add(this.getTextRepresentante());

            List<String>listaComponentesEstilos=this.getEstilosTodosComponentes();
            this.setEstilosTodosComponentesActualizar(listaComponentesEstilos);
        //       System.out.println("List<String>listaComponentesEstilos----- "+listaComponentesEstilos.get(0));
            if(this.esCamposVaciosActualizarCliente(listaComponentes))
            {
                if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
                    {
                        Persona p=new Persona();
                        p.setNumerocliente(this.getTextNumeroCliente().getValue().toString().trim());
                        p.setDireccion((this.getTextDireccionCliente().getValue().toString().trim()).toUpperCase());
                        p.setFechaingreso(JsfUtil.convertirAFecha(this.getTextFechaIngresoCliente().getValue().toString().trim()));//(Date)this.getCalFechaIngresoCliente().getValue());
                        p.setTelefono(this.getTextTelefonoCliente().getValue().toString().trim());
                        p.setTelefonocelular(this.getTextCelularCliente().getValue().toString().trim());
                        p.setPrioridadcliente(Integer.parseInt(this.getComboPrioridadClientePersona().getValue().toString().trim()));
                        p.setDigitador(Integer.parseInt(this.getUsuarioBean().getUsuario().getCodUsuario()));
                        p.setFechadigitador(new Date());
                        p.setNombrecliente(this.getTextNombreCliente().getValue().toString().trim().toUpperCase());
                        p.setNumerocedula(this.getTextCedulaCliente().getValue().toString().trim().toUpperCase());

                        this.getClienteBean().setPersona(p);
                    }
                    else
                    {
                        Empresa e=new Empresa();
                        e.setNumerocliente(this.getTextNumeroCliente().getValue().toString().trim());
                        e.setDireccion(this.getTextDireccionCliente().getValue().toString().trim().toUpperCase());
                        e.setFechaingreso(JsfUtil.convertirAFecha(this.getTextFechaIngresoCliente().getValue().toString().trim()));
                        e.setTelefono(this.getTextTelefonoCliente().getValue().toString().trim());
                        e.setTelefonocelular(this.getTextCelularCliente().getValue().toString().trim());
                        e.setPrioridadcliente(Integer.parseInt(this.getComboPrioridadClienteEmpresa().getValue().toString().trim()));
                        e.setDigitador(Integer.parseInt(this.getUsuarioBean().getUsuario().getCodUsuario()));
                        e.setFechadigitador(new Date());
                        e.setNombreempresa(this.getTextNombreEmpresa().getValue().toString().trim().toUpperCase());
                        e.setRuc(this.getTextRUCCliente().getValue().toString().trim().toUpperCase());
                        e.setRepresentante(this.getTextRepresentante().getValue().toString().trim().toUpperCase());

                        this.getClienteBean().setEmpresa(e);
                    }
                    this.getClienteBean().setPersonaEmpresa(this.getHiddenPersonaEmpresa().getValue().toString());
                    List listaRespuestaIngreso=this.getClienteBean().modificarDatosCliente();
                    if((Boolean)listaRespuestaIngreso.get(0))
                    {
                        JsfUtil.mostrarMensaje("info",listaRespuestaIngreso.get(1).toString(),"");
                        this.borrarDatos();
                        JsfUtil.redirect("consultarClientes.xhtml");
                        System.out.println(" cliente actualizado");
                    }     
                    else
                    {
                        JsfUtil.mostrarMensaje("error",listaRespuestaIngreso.get(1).toString(),"");
                    }                  
            }
            else
            {
                JsfUtil.mostrarMensaje("error", "Error: Datos requeridos deben ser llenados", "");
                //this.mostrarConfirmDialogo("Ingresar Cliente", "Error: Datos requeridos deben ser llenados");
            }
       }
       else
       {
            JsfUtil.mostrarMensaje("error","No está ingresado al sistema","");            
    //            this.borrarDatos();
       }
   }
    public void setEstilosTodosComponentesActualizar(List<String>listaComponentesEstilos)
   {
       this.getTextDireccionCliente().setStyle(listaComponentesEstilos.get(1).toString());
       this.getTextFechaIngresoCliente().setStyle(listaComponentesEstilos.get(2).toString());
       this.getTextTelefonoCliente().setStyle(listaComponentesEstilos.get(3).toString());      
       this.getTextCelularCliente().setStyle(listaComponentesEstilos.get(4).toString());       
       if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
       {
            this.getComboPrioridadClientePersona().setStyle(listaComponentesEstilos.get(5).toString());
            this.getTextCedulaCliente().setStyle(listaComponentesEstilos.get(6).toString());
            this.getTextNombreCliente().setStyle(listaComponentesEstilos.get(7).toString());          
       }
       else{
            this.getComboPrioridadClienteEmpresa().setStyle(listaComponentesEstilos.get(5).toString());
            this.getTextRUCCliente().setStyle(listaComponentesEstilos.get(8).toString());
            this.getTextNombreEmpresa().setStyle(listaComponentesEstilos.get(9).toString());
            this.getTextRepresentante().setStyle(listaComponentesEstilos.get(10).toString());
       }
   }
    public boolean esCamposVaciosActualizarCliente(List<Object>listaComponentes)
   {
       boolean noVacio=true;
       List<String>listaComponentesEstilos=this.getEstilosTodosComponentes();
       for(int i=0;i<listaComponentes.size();i++)
       {
           if(i==1)
           {
                  
           }
           else
           {
                if(i==4)
                {
                    if(((HtmlSelectOneMenu)listaComponentes.get(i)).getValue().toString().equals("0"))
                    {                        
                        noVacio=false;
                        ((HtmlSelectOneMenu)listaComponentes.get(i)).setStyle(listaComponentesEstilos.get(i+1)+";background-color: crimson");    
                    }
                }
                else
                {
                    boolean isEmpty=true;
                    try{
                        isEmpty=((InputText)listaComponentes.get(i)).getValue().toString().isEmpty();
                    }
                    catch(java.lang.NullPointerException npe)
                    {
                        isEmpty=true;
                    }
                    if(isEmpty&&(i<=4))
                    {
                        noVacio=false;                       
                        ((InputText)listaComponentes.get(i)).setStyle(listaComponentesEstilos.get(i+1)+";border-color: crimson");
                    }
                    else
                    {
                        if(this.getHiddenPersonaEmpresa().getValue().toString().equals("P"))
                        {
                            if((i<=6)&&isEmpty)
                            {
                                 noVacio=false;
                                ((InputText)listaComponentes.get(i)).setStyle(listaComponentesEstilos.get(i+1)+";border-color: crimson");   
                            }
                        }
                        else
                        {
                            if(this.getHiddenPersonaEmpresa().getValue().toString().equals("E"))
                            {
                                if((i>6)&&isEmpty)
                                {
                                    noVacio=false;
                                    ((InputText)listaComponentes.get(i)).setStyle(listaComponentesEstilos.get(i+1)+";border-color: crimson");   
                                }
                                
                            }
                        }
                        
                    }
                }
           }
       }
       return noVacio;
   }
    /////fin de metodos de modificarDatosClientePersona.xhtml
    
  /////metodos de eliminarCliente.xhtml 
    public void clicBotonEliminarCliente()
    {
         if(this.getLogin().verificarLogin())
        {
            String personaEmpresa=this.getTabSeleccionadoPersonaOEmpresa();
            String datoClienteEliminar="";
            if(personaEmpresa.equals("Persona"))
            {
                System.out.println("clicBotonEliminarCliente Cliente para Eliminar: "+this.getClienteActualizarDatosPersona().getNumerocliente());
                datoClienteEliminar=this.getClienteActualizarDatosPersona().getNumerocliente();
            }
            else
            {
                System.out.println("clicBotonEliminarCliente Cliente para Eliminar: "+this.getClienteActualizarDatosEmpresa().getNumerocliente());
                datoClienteEliminar=this.getClienteActualizarDatosEmpresa().getNumerocliente();
            }               
       
            List listaRespuestaIngreso=this.getClienteBean().eliminarCliente(datoClienteEliminar,personaEmpresa);
            if((Boolean)listaRespuestaIngreso.get(0))
            { 
//                JsfUtil.refreshElementJS("dialogoEliminarCliente.hide();");
//                JsfUtil.mostrarMensajeJS(listaRespuestaIngreso.get(1).toString());
                JsfUtil.mostrarMensaje("info",listaRespuestaIngreso.get(1).toString(),"");
                this.reconsultarCliente();                    
//                JsfUtil.updateComponente("formTablaConsultarHorma",":tablaConsultarHorma");                
                System.out.println(" cliente eliminado");
            }
            else
            {
//                JsfUtil.updateComponente("formDialogoIngresarHorma", "DialogoIngresarHorma");                
                JsfUtil.mostrarMensajeJS(listaRespuestaIngreso.get(1).toString());
            }
        }
        else
        {
            JsfUtil.mostrarMensajeJS("No está ingresado al sistema!");            
//            this.borrarDatos();
        }
//        System.out.println("clicBotonEliminarCliente Cliente para Eliminar: "+this.getClienteActualizarDatos().getNumeroCliente());
//        String datosClienteEliminar=this.getClienteActualizarDatos().getNumeroCliente();
//        if(this.getClienteActualizarDatos().getNumeroCliente().startsWith("CP"))
//        {
//            datosClienteEliminar+="\n"+this.getClienteActualizarDatos().getNumeroCedula();
//            datosClienteEliminar+="\n"+this.getClienteActualizarDatos().getNombreCliente();
//        }
//        else
//        {
//            datosClienteEliminar+="\n"+this.getClienteActualizarDatos().getRuc();
//            datosClienteEliminar+="\n"+this.getClienteActualizarDatos().getNombreEmpresa();
//        }
//        
//        if(this.cliente.eliminarCliente(this.getClienteActualizarDatos().getNumeroCliente()))
//        {
//            this.cliente.mostrarMensaje("info", "Se ha eliminado cliente:"+datosClienteEliminar,"");
//            this.clicBotonBuscarCliente();//recarga la tabla de datos de los clientes
//            System.out.println("Cliente Eliminado: "+datosClienteEliminar);
//        }
//        else
//        {
//            this.cliente.mostrarMensaje("error", "No se pudo eliminar cliente:" +datosClienteEliminar+" \n Tal vez ya tenga registrado pedidos.","");
//             System.out.println("No se pudo eliminar cliente: "+datosClienteEliminar);
//        }
    }
  /////metodos de eliminarCliente.xhtml 

    
}
